package com.naiterui.ehp.bs.patient.dao.impl;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.naiterui.ehp.bp.constants.PayStatus;
import com.naiterui.ehp.bp.domain.DrCustomChargeOrder;
import com.naiterui.ehp.bs.patient.dao.IDrCustomChargeOrderDao;
import com.naiterui.ehp.bs.patient.repository.IApIDrCustomChargeOrderRepository;

/**
 * <P>功能描述 : 医生自定义收费服务订单dao实现 </P>
 * <P>File name : DrCustomChargeOrderImpl </P>
 * <P>Author : 王泽浩 </P>
 * <P>E-Mail : 1028625100@qq.com </P>
 * <P>Date : 2017/3/30 上午10:53</P>
 */
@Component
public class ApIDrCustomChargeOrderDaoImpl implements IDrCustomChargeOrderDao {

    @Autowired
    private IApIDrCustomChargeOrderRepository drCustomChargeOrderRepository;

    /**
     * <P>功能描述 : 通过ID获取自定义服务收费 </P>
     * <P>Method Name : getCustomChargeId </P>
     * <P>Author : 王泽浩 </P>
     * <P>E-Mail : 1028625100@qq.com </P>
     * <P>Date : 2017-03-30 21:51:42</P>
     *
     * @param id 主键ID
     *
     * @return 自定义服务订单
     *
     * @since 2.7
     */
    @Override
    public DrCustomChargeOrder get(long id) {
        return drCustomChargeOrderRepository.get(id);
    }

    /**
     * <P>功能描述 : 保存或者更新自定义服务订单 </P>
     * <P>Method Name : saveOrUpdate </P>
     * <P>Author : 王泽浩 </P>
     * <P>E-Mail : 1028625100@qq.com </P>
     * <P>Date : 2017-03-30 22:47:35</P>
     *
     * @param drCustomChargeOrder 需要保存或者更新的自定义服务订单
     *
     * @since 2.7
     */
    @Override
    public void saveOrUpdate(DrCustomChargeOrder drCustomChargeOrder) {

        Long drCustomChargeOrderId = drCustomChargeOrder.getId();

        // 如果ID为空，那么就认为是保存，如果有ID，那么认为是更新，其实这里应该判断bean的状态
        if (drCustomChargeOrderId == null) {

            drCustomChargeOrder.setPayStatus(PayStatus.WAIT_PAY.getValue());// 新创建的订单肯定是待支付的
            drCustomChargeOrder.setCreatedAt(new Date());// 创建时间
            drCustomChargeOrder.setCreatedBy("system");// 创建人
            drCustomChargeOrder.setVersion(0);

        } else {

            drCustomChargeOrder.setChangedAt(new Date());// 修改时间
            drCustomChargeOrder.setChangedBy("system");// 修改人

        }

        drCustomChargeOrderRepository.save(drCustomChargeOrder);
    }

}
